;(async function () {
  const express = require('express')
  // const cors = require('cors')
  // 引入处理上传文件以及json数据的中间件
  const formidable = require('express-formidable')
  // 引入路由中间件
  const adminRouter = require('./routes/adminRouter')
  const loginRouter = require('./routes/loginRouter')
  const advRouter = require('./routes/advRouter')

  // 引入连接数据库的代码
  const db = require('./db/connect')
  try {
    await db
    console.log('数据库连接成功')
  } catch (error) {
    console.log('数据库连接失败', error)
    return
  }

  const app = express()

  // 使用其他中间件,一定要写在路由的前面
  // app.use(cors()) //处理跨域

  // 处理post请求的中间件
  // 注意: 由于使用了formidable处理post请求上传的数据,所以获取请求主体数据的方式是req.fields. 不能再使用req.body了
  app.use(
    formidable({
      // 注意: 需要自己手动创建upload文件夹
      uploadDir: './upload', //上传给服务器的文件所存储的目录,
      keepExtensions: true, // 上传的文件保留后缀名
    })
  )

  // 配置express.static,让服务器自动响应静态资源
  app.use(express.static('upload'))

  // 使用路由器中间件
  app.use(adminRouter)
  app.use(loginRouter)
  app.use(advRouter)

  app.listen(5001, (err) => {
    if (err) console.log('服务器启动失败', err)
    else console.log('服务器启动成功')
  })
})()
